package net.sf.lab3f.ftp; import java.io.IOException; import java.io.OutputStream; import java.io.FileInputStream; import java.util.Properties; import java.security.NoSuchAlgorithmException; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPSClient; import net.sf.lab3f.osgi.Ftpable; public class Connector implements Ftpable{ private Properties props = new Properties(); public void start () throws Exception{ props.load(new FileInputStream("conf/ftp.properties")); } public java.io.OutputStream openOutputStream(String user) throws IOException, NoSuchAlgorithmException { return openOutputStream(user, false); } public java.io.OutputStream openOutputStream(String user, boolean secure) throws IOException, NoSuchAlgorithmException { FTPClient ftp = !secure ? new FTPClient() : new FTPSClient("TLS"); System.out.println(user); System.out.println(secure); String host = props.getProperty(user + ".host"); String login = props.getProperty(user + ".login"); String passwd = props.getProperty(user + ".passwd"); String dir = props.getProperty(user + ".dir"); String fileName = props.getProperty(user + ".file"); ftp.connect(host); ftp.login(login, passwd); ftp.enterLocalPassiveMode(); ftp.setFileType(FTPClient.BINARY_FILE_TYPE); OutputStream out = ftp.storeFileStream(dir + '/' + fileName); // new Thread(new Closer(ftp, out)).start(); System.out.println("FTP stream is open" + (secure ? " (secure)." : ".")); return out; } private class Closer implements Runnable{ FTPClient ftp; OutputStream out; Closer(FTPClient f, OutputStream o){ftp = f;out = o;} public void run(){ try{ Thread.sleep(20000); out.close(); ftp.logout(); ftp.disconnect(); System.out.println("FTP connection closed."); } catch(Exception ex){System.out.println("FTP exception: " + ex);} } } /* public javax.microedition.io.Connection open(String s){return null;} public javax.microedition.io.Connection open(String s, int mode){return null;} public javax.microedition.io.Connection open(String s, int mode, boolean timeout){return null;} public java.io.DataInputStream openDataInputStream(String s){return null;} public java.io.DataOutputStream openDataOutputStream(String s){return null;} public java.io.InputStream openInputStream(String s){return null;} */ }